//
//  main.m
//  03-NSArrayAndNSDict
//
//  Created by mafeng on 16/7/6.
//  Copyright © 2016年 mafeng. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    // 1.数组
    // 数组: 可变数组 NSMutableArray 与 不可变数组 NSArray
    // 数组主要是有序的存放元素的集合类型, 并且可以通过下标取值.
    // 不可变数组 只能取值
    // 可变数组 可以进行增, 删, 改, 查
    
    // 2> 初始化数组
    // <1> initWithObjects 后面填入的参数一定是对象类型
    // 可变参数 c语言中的链表(后续讲)
    // 顺序填入你需要的元素
    NSArray *array = [[NSArray alloc] initWithObjects:@"123", @"345", @"456", nil];
    // <2> 构造器方法
    // <3> 字面量 同 NSString @"" NSNumber @()
    //                NSArray @[]
    // 三种初始化方法, 推荐使用字面量, 字面量可以识别对象是否为空值, 但一般的初始化方法不可以, 如果为空, 字面量会崩溃, 初始化方法会识别nil为结束, 并不会产生问题, 造成数据丢失.
    NSArray *myArray = @[@"123", @"456", @"789"];
    // 3>取值相关
    //   <1> count 取得数组中元素的个数
    NSLog(@"%ld", array.count);
    //   <2> 数组中取值, 通过下标去取值
    NSString *numberString = [array objectAtIndex:2];
    //   <3> 语法糖 取值方式 快捷取值
    NSString *numberStr = array[2];
    //   <4> 根据值取对应的下标
    NSUInteger indexOfObject = [array indexOfObject:@"123"];
    NSLog(@"%ld", indexOfObject);
    //   <5> 判断对象是否存在于数组中
    BOOL isHaveObject = [array containsObject:@"123"];
    NSLog(@"%@", isHaveObject ? @"YES": @"NO");
    //   <6> 取数组中第零位 / 取数组中最后一个元素(如果数组为空, 返回的对象为空, 并且不会崩溃)
    [array firstObject];
    [array lastObject];
    // 4> 不可变数组,改变元素(会生成新的数组, 不会在原数组基础上修改)
    //    1> 数组添加一个新的元素
    array = [array arrayByAddingObject:@"7987"];
    NSLog(@"arr = %@", array);
    //    2> 数组添加另外一个数组中的所有元素
    array = [array arrayByAddingObjectsFromArray:array];
    NSLog(@"%@", array);
    
    
    // 可变数组
    // NSMUtableArray
    // 1> 初始化方法 同 不可变数组
    // 遇到可变数组, 只能使用初始化方法或者便利构造器
    // 字面量创建方法, 不推荐使用
    NSMutableArray *mutableArray = [@[] mutableCopy];
    // 2> 取值方式 与 不可变数组一样
    // 3> 可变数组改变元素
    // <1> 数组中添加元素
    [mutableArray addObject:@"123"];
    //
    [mutableArray insertObject:@"456" atIndex:0];
   
    
    // 可变 与 不可变的区别
    // 1. 不可变调用改变的方法时, 会生成对象, 可变则在本身上修改
    // 2. 可变 继承于 不可变
    
    
    // 子串消失了
    NSString *urlString = @"www.a123cb.com";
    NSArray *urlArray = [urlString componentsSeparatedByString:@"a"];
    NSLog(@"%@", urlString);
    // 根据某个字符串,拼接
    // jion
    
    
    
    return 0;
}
